home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / util / TimerThread.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.2 KB  |  71 lines

  1. package java.util;
  2.  
  3. class TimerThread extends Thread {
  4.    boolean newTasksMayBeScheduled = true;
  5.    private TaskQueue queue;
  6.  
  7.    TimerThread(TaskQueue var1) {
  8.       this.queue = var1;
  9.    }
  10.  
  11.    public void run() {
  12.       try {
  13.          this.mainLoop();
  14.       } finally {
  15.          synchronized(this.queue) {
  16.             this.newTasksMayBeScheduled = false;
  17.             this.queue.clear();
  18.          }
  19.       }
  20.  
  21.    }
  22.  
  23.    private void mainLoop() {
  24.       while(true) {
  25.          try {
  26.             TimerTask var1;
  27.             boolean var2;
  28.             synchronized(this.queue) {
  29.                while(this.queue.isEmpty() && this.newTasksMayBeScheduled) {
  30.                   this.queue.wait();
  31.                }
  32.  
  33.                if (this.queue.isEmpty()) {
  34.                   return;
  35.                }
  36.  
  37.                var1 = this.queue.getMin();
  38.                long var4;
  39.                long var6;
  40.                synchronized(var1.lock) {
  41.                   if (var1.state == 3) {
  42.                      this.queue.removeMin();
  43.                      continue;
  44.                   }
  45.  
  46.                   var4 = System.currentTimeMillis();
  47.                   var6 = var1.nextExecutionTime;
  48.                   if (var2 = var6 <= var4) {
  49.                      if (var1.period == 0L) {
  50.                         this.queue.removeMin();
  51.                         var1.state = 2;
  52.                      } else {
  53.                         this.queue.rescheduleMin(var1.period < 0L ? var4 - var1.period : var6 + var1.period);
  54.                      }
  55.                   }
  56.                }
  57.  
  58.                if (!var2) {
  59.                   this.queue.wait(var6 - var4);
  60.                }
  61.             }
  62.  
  63.             if (var2) {
  64.                var1.run();
  65.             }
  66.          } catch (InterruptedException var13) {
  67.          }
  68.       }
  69.    }
  70. }
  71.